package cn.j229.bug.zhongxuan.controller;

import cn.j229.bug.zhongxuan.pojo.SysUser;
import cn.j229.bug.zhongxuan.service.SysUserService;
import cn.j229.bug.zhongxuan.util.JsonResult;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

// controller也需要被spring管理，需要添加组件注解
@Controller
// @ResponseBody 放在类上声明表示所有的方法
// @RestController  // 同时包含了@Controller和@ResponseBody
@RequestMapping("/sysUser")
public class SysUserController {
    // 通过RequestMethod改变请求方式
    // 多请求方式注解
    @RequestMapping(value = "/hello",method = {RequestMethod.GET,RequestMethod.POST})
    public void hello(){
        System.out.println("hello springmvc");
    }

    @GetMapping("/helloWorld")
    // @PostMapping("/helloWorld")
//    @PutMapping("/helloWorld")
//    @DeleteMapping("/helloWorld")
    public void helloWorld(){
        System.out.println("helloWorld springmvc");
    }

    //  如果是访问jsp，直接返回jsp文件的名字即可
    // mvc框架默认返回字符串的时候，是表示jsp文件的名称，默认使用转发方式（java方式）
    // 重定向：浏览器行为
    // 设定参数：ModelMap
    @RequestMapping("/jsp")
    public String getJsp(ModelMap modelMap){
        // 给ModelMap中添加字符串类型的数据
        modelMap.addAttribute("name","张三丰");
        // 给ModelMap中添加对象类型的数据
        SysUser sysUser = new SysUser();
        sysUser.setJobNumber("GL200");
        modelMap.addAttribute("sysUser",sysUser);
        return "index";
//        return "redirect:/json";   重定向方式
//        return "redirect:/sysUser/json";
    }

    @GetMapping("/string")
    @ResponseBody
    public String getString(){
        return "Hello 这是一个直接返回的字符串！";
    }

    @Resource
    SysUserService sysUserService;

    // 当我们要给前端返回json时，要通过@ResponseBody声明
    // @PostMapping("/json")
//     @RequestMapping("/json")
    @GetMapping("/json")
    @ResponseBody
    public SysUser getJson(){
        SysUser sysUser = sysUserService.findById(1);
        return sysUser;
    }


    @GetMapping("/json2")
    @ResponseBody
    public List getJson2(){
        List<Map<String, Object>> byId2 = sysUserService.findById2(1);
        return byId2;
    }


    @GetMapping("/json3")
    @ResponseBody
    public Map getJson3(){
        List<Map<String, Object>> byId2 = sysUserService.findById2(1);
        JsonResult jsonResult = new JsonResult();
        jsonResult.setData(byId2);
        jsonResult.setCode("200");
        jsonResult.setMsg("hahahahha");
        return jsonResult.getValues();
    }
}
